package cn.wolfcode.service;


import cn.wolfcode.common.domain.UserInfo;
import cn.wolfcode.common.web.Result;
import cn.wolfcode.domain.OrderInfo;
import cn.wolfcode.domain.SeckillProductVo;
import cn.wolfcode.mq.OrderMQResult;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * Created by wolfcode-lanxw
 */
public interface IOrderInfoService {

    /**
     * 秒杀逻辑处理
     * @param seckillProductVo
     * @param userInfo
     * @return 返回订单编号
     */
    String doSeckill(SeckillProductVo seckillProductVo, UserInfo userInfo);

    /**
     * 超时取消订单
     * @param orderMQResult
     */
    void cancelTimeOutOrder(OrderMQResult orderMQResult);

    /**
     * 查询订单
     * @param orderNo   订单编号
     * @return
     */
    OrderInfo find(String orderNo);

    /**
     * 在线支付
     * @param orderNo   订单编号
     * @return          订单表单的字符串形式
     */
    String payOnline(String orderNo);

    /**
     * 支付成功, 修改指定订单状态为已支付
     * @param orderNo   支付宝返回的订单编号
     */
    void paySuccess(String orderNo);

    /**
     * 支付宝退款 (在线支付)
     * @param orderInfo
     */
    void refundOnline(OrderInfo orderInfo);

    /**
     * 积分支付
     * @param orderNo
     */
    void payIntergral(String orderNo);

    /**
     * 积分退款
     */
    void refundIntergral(OrderInfo orderInfo);
}
